There are many applications where software needs to exert real-time control. Examples of this are control systems for aircraft, factories, automobiles, printers, broker transaction computers, etc. A typical implementation would have a dedicated target computer which controls the aircraft, factory, etc., with target software on the target computer. This computer could be uplinked via a TCP-IP ethernet link, serial linked, networked or otherwise connected to a host computer. This host could be a Unix®-based workstation or a Windows®-based PC, for example. The host can be used to download and configure the software which will run on the target computer, and customize such software.
U.S. Pat. No. 5,872,909 entitled “Logic Analyzer for Software,” (“the '909 patent”), describes a system which logs events that occur in target software and displays context status information in a time-line fashion with specific icons indicating events and status changes to show task interaction over time. The system is useful for monitoring performance of software, in particular real-time, embedded or multi-tasking software running on a target computer. The WindView® software analyzer product manufactured and distributed by Wind River Systems, Inc. is a commercially available product that has made use of this system through the use of a host system monitoring a separate target system.
The system of the '909 patent logs events which occur in the target software, and stores these in a buffer for periodic uploading to the host system. Such events include context switching times of particular software tasks, and task status at such context switch times, along with events triggering such a context switch or other events. The host system reconstructs the real-time status of the target software from the limited event data uploaded to it. The status information is then displayed in a user-friendly manner. This provides the ability to perform a logic analyzer function on software in real time (or as a post-mortem). A display having multiple rows, with one for each task or interrupt level, is provided. Along a time line or an axis representing a sequence of events, an indicator shows the status of each task/interrupt with icons indicating events and any change in status. The task status may be indicated with different line patterns or stipples, for example, a wavy line indicating that a program is ready to run, a dotted line indicating that a program is waiting for a semaphore or a message from a message queue that it needs to run, and a dashed line indicating the program is waiting for a time-out. This detailed graphical interface provides an easily understood overall representation of the status of a target software.
When performing triage (e.g., trouble-shooting) on the target software, or when navigating through the collection of event data, it is desirable to have a way of locating an area of interest within the data. Typically, this can be accomplished by zooming out to the maximum level to obtain a resulting “blurred” overview of the entire log. The user can then to search for a dense area of activity and “zoom in” on that area for a more detailed analysis.
However, the maximum level zoom view of the log contains much more information than is required and can be slow to render. The maximum level zoom view also may not adequately display the information when all contexts do not fit on the screen vertically.
Once a specific section of the log has been located, the user can zoom in on that view. A standard window scroll bar may be used to represent the position and relative portion of the log being displayed.